package com.itlong.cloud.enumerate;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 *<desc>
 *      用户余额变动流水来源枚举类
 *</desc>
 *
 * @createDate 2018/4/24
 */
public enum PayTypeEnum {

    WECHAT_PAY("微信支付",1),           //微信支付
    FACE_PAY("人脸识别",2),             //人脸识别
    ELEVATOR_CARD_PAY("电梯刷卡",3),    //电梯刷卡


    UNKOWNTYPE("未知设备类型", -1);      //未知设备类型



    private String description;
    private Integer type;


    PayTypeEnum(String value, Integer type) {
        this.type = type;
        this.description = value;
    }

    /**
     * {@link #description}的getter。
     */
    public String getDescription() {
        return description;
    }

    /**
     * {@link #type}的getter。
     */
    public Integer getType() {
        return type;
    }



    /**
     * <p>
     *     获取枚举的描述。
     * <p/>
     *
     * @param type  类型值。
     * @return {@link String}。
     */
    public static String getDescription(int type){
        PayTypeEnum[] types = PayTypeEnum.values();
        for(PayTypeEnum limitCategory : types ){
            if(limitCategory.getType() == type){
                return limitCategory.getDescription();
            }
        }
        return null;
    }

    /**
     * <desc>
     *      根据设备类型获取设备类型的枚举
     * </desc>
     * @param payType 枚举类型
     * @return 枚举描述
     * @author Juguang.S
     * @createDate 2018/04/24
     */
    public static PayTypeEnum getByPayType(Integer payType){
        if (payType != null) {
            for (PayTypeEnum value : values()) {
                if (value.getType() == payType) {
                    return value;
                }
            }
        }
        return UNKOWNTYPE;
    }

    /**
     * <p>
     *     获取枚举的类型。
     * <p/>
     *
     * @param type  类型值。
     * @return {@link int}。
     */
    public static int getType(Integer type) {
        PayTypeEnum[] types = PayTypeEnum.values();
        for(PayTypeEnum limitCategory : types ){
            if(limitCategory.getType() == type){
                return limitCategory.getType();
            }
        }
        return 0 ;
    }



    /**
     * <p>
     *     获取枚举的list。
     * <p/>
     *
     * @return {@link List}。
     */
    public static List<Map> toList() {
        List<Map> mapList = new ArrayList<Map>();
        PayTypeEnum[] ds = PayTypeEnum.values();
        for (PayTypeEnum one : ds) {
            Map<String,Object> term= new HashMap<String,Object>();
            term.put("type",one.getType());
            term.put("description",one.getDescription());
            mapList.add(term);
        }
        return mapList;
    }
}
